package com.smart.community.property.dto;

import lombok.Data;

import javax.validation.constraints.DecimalMin;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDate;

/**
 * 物业费编辑数据传输对象
 * 用于编辑功能，只包含可编辑的字段
 * 编辑时不能修改计费月份，只能根据现有的月份区间计算费用
 * 
 * @author Wu.Liang
 * @since 2025-01-30
 */
@Data
public class PropertyFeeEditDTO implements Serializable {
    
    private static final long serialVersionUID = 1L;
    
    /**
     * 费用金额（单月费用）
     */
    @NotNull(message = "费用金额不能为空")
    @DecimalMin(value = "0.01", message = "费用金额必须大于0")
    private BigDecimal amount;
    
    /**
     * 到期日期（只读，编辑时不允许修改，仅用于展示）
     */
    private LocalDate dueDate;
    
    /**
     * 费用计费方式：0-按面积计费，1-固定费用
     */
    private Integer feeType;
    
    /**
     * 单价（按面积计费时使用）
     */
    private BigDecimal unitPrice;
    
    /**
     * 固定金额（固定费用时使用）
     */
    private BigDecimal fixedAmount;
    
    /**
     * 缴费状态：0-未缴费，1-已缴费，2-逾期
     */
    @NotNull(message = "缴费状态不能为空")
    private Integer paymentStatus;
} 